%% 新增绘图部分 - 信道估计时频特性可视化

% 选择要可视化的天线和流索引
rxAnt = 1;  % 接收天线索引
txAnt = 1;  % 发送天线索引
scIdx = 30; % 选择的子载波索引
symIdx = 7; % 选择的符号索引

% 转换信道响应为幅度(dB)
H_true_mag = 20*log10(abs(H_true(:,:,rxAnt,txAnt)));
H_est_mag = 20*log10(abs(H_RS_estimated(:,:,rxAnt,txAnt)));

%% 时域特性分析 - 固定子载波
figure('Name','时域特性分析','Position',[100 100 1200 500])
subplot(1,2,1)
plot(1:numSymbols, H_true_mag(scIdx,:), 'b-o', 'LineWidth',1.5)
hold on
plot(1:numSymbols, H_est_mag(scIdx,:), 'r--s', 'LineWidth',1.5)
title(['时域响应 (子载波#' num2str(scIdx) ')'])
xlabel('OFDM符号索引')
ylabel('幅度 (dB)')
legend('真实信道','估计信道')
grid on

% 时延分布分析
subplot(1,2,2)
h_impulse = ifft(H_RS_estimated(:,symIdx,rxAnt,txAnt)); % 时域冲激响应
plot((0:numSubcarriers-1)*Ts*1e6, 20*log10(abs(h_impulse)))
title(['时延分布 (符号#' num2str(symIdx) ')'])
xlabel('时延(\mus)')
ylabel('幅度 (dB)')
grid on
xlim([0 tau_max*1e6*2])

%% 频域特性分析 - 固定符号
figure('Name','频域特性分析','Position',[100 100 1200 500])
subplot(1,2,1)
plot(1:numSubcarriers, H_true_mag(:,symIdx), 'b-o', 'LineWidth',1.5)
hold on
plot(1:numSubcarriers, H_est_mag(:,symIdx), 'r--s', 'LineWidth',1.5)
title(['频域响应 (符号#' num2str(symIdx) ')'])
xlabel('子载波索引')
ylabel('幅度 (dB)')
legend('真实信道','估计信道')
grid on

% 频率响应误差
subplot(1,2,2)
error_freq = H_true_mag(:,symIdx) - H_est_mag(:,symIdx);
plot(1:numSubcarriers, error_freq, 'm-*', 'LineWidth',1.5)
title('频域估计误差')
xlabel('子载波索引')
ylabel('误差幅度 (dB)')
grid on
ylim([-5 5])

%% 二维时频响应可视化
figure('Name','二维信道响应','Position',[100 100 800 600])
subplot(2,1,1)
imagesc(1:numSymbols, 1:numSubcarriers, H_true_mag)
title('真实信道时频响应')
xlabel('符号索引')
ylabel('子载波索引')
colorbar
caxis([-40 0]) % 统一颜色范围

subplot(2,1,2)
imagesc(1:numSymbols, 1:numSubcarriers, H_est_mag)
title('估计信道时频响应')
xlabel('符号索引')
ylabel('子载波索引')
colorbar
caxis([-40 0])

%% 多普勒-时延联合分析
figure('Name','多普勒-时延特性')
surf(linspace(-fD_max,fD_max,numSymbols),...  % 多普勒轴
     linspace(0,tau_max*1e6,numSubcarriers),... % 时延轴
     H_est_mag)
xlabel('多普勒频移 (Hz)')
ylabel('时延 (\mus)')
zlabel('幅度 (dB)')
title('信道散射函数')
colormap jet
shading interp
view(30,45)